package main

import (
	"fmt"
	"strconv"
)

// strconv包实现了基本数据类型和其字符串表示的相互转换。
func main() {
	/*
		str := "12345"
		// 1.字符串转为整型
		// 返回两个结果，分别是成功的和可能产生的错误
		// result, err := strconv.Atoi(str)
		// fmt.Println("成功：", result)
		// fmt.Println("错误：", err)
		result, _ := strconv.Atoi(str)
		fmt.Println(result)

		num := 12345
		// 2.整型转为字符串，只有一个结果
		str := strconv.Itoa(num)
		fmt.Printf("str=%s, 类型：%T", str, str)

		// 3.字符串转为浮点型
		str := "123.456"
		// 返回两个结果，成功和失败
		result, err := strconv.ParseFloat(str, 64)
		fmt.Println("成功：", result)
		fmt.Println("错误：", err)
		// 4.浮点型转为字符串
		num := 123.456
		// 参数1：要转换的浮点型
		// 参数2：f 输出为定点数
		// 参数3：2 保留小数点后的位数
		// 参数4：64 要转为浮点型的位数
		str2 := strconv.FormatFloat(num, 'f', 2, 64)
		fmt.Printf("str2 = %s 类型：%T", str2, str2)
	*/
	// 5.字符串转为布尔型
	str := "True"
	// "true"  "1"  -> true
	result, err := strconv.ParseBool(str)
	fmt.Println("成功：", result)
	fmt.Println("错误：", err)
	// 6.布尔型转为字符串
	b2 := true
	str2 := strconv.FormatBool(b2)
	fmt.Printf("str2 = %s 类型:%T", str2, str2)
}
